/**
 * 黑板模式（Blackboard Design Pattern）是观察者模式的一个扩展，知名度并不高，但是我们使用的范围却非常广。黑板模式的意图如下：
 * 允许消息的读写同时进行，广泛地交互消息
 * 
 * 这里写图片描述
 * 
 * 看到这个图大家可能会说：这不是一个简单的消息广播吗？是的，确实如此，黑板模式确实是消息的广播，主要解决的问题是消息的生产者和消费者之间的耦合问题，
 * 它的核心是消息存储（黑板），它存储所有消息，并可以随时被读取。当消息生产者把消息写入到消息仓库后，其他消费者就可以从仓库中读取。当然，
 * 此时消息的写入者也可以变身为消息的阅读者，读写者在时间上解耦。对于这些消息，消费者只需要关注特定消息，不处理与自己不相关的消息，
 * 这一点通常通过过滤器来实现。
 * 
 * 2.实现方法
 * 黑板模式一般不会对架构产生什么影响，但它通常会要求有一个清晰的消息结构。黑板模式一般都会提供一系列的过滤器，以便消息的消费者不再接触到与自己无关的消息。
 * 在实际开发中，黑板模式常见的有两种实现方式。
 * 
 * 数据库作为黑板
 * 利用数据库充当黑板，生产者更新数据信息，不同的消费者共享数据库中信息，这是最常见的实现方式。该方式在技术上容易实现，开发量较少，熟悉度较高。
 * 缺点是在大量消息和高频率访问的情况下，性能会受到一定影响。
 * 
 * 在该模式下，消息的读取是通过消费者主动“拉取”，因此该模式也叫做“拉模式”。
 * 
 * 消息队列作为黑板 以消息队列作为黑板，通过订阅-发布模型即可实现黑板模式。这也是黑板模式被淡忘的一个重要原因：消息队列（Message
 * Queue）已经非常普及了，做Java开发的已经没有几个不知道消息队列的。
 * 
 * 在该模式下，消费者接收到的消息是被主动推送过来的，因此该模式也称为“推模式”。
 * 
 * @author kongmou
 * @date 2018年7月17日下午5:29:56
 * @since jdk 1.8
 * 
 * @version 1.0
 */
package twentyThreePattern.zextend.black;